package C615;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

/**
 * @program: javase
 * @description: 三数之和
 * @author: luolidong
 * @create: 2021-06-16 19:19
 * @version: 1.0
 */
public class ThreeSum {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] split = s.split(",");
//        String s2 = scanner.nextLine();
//        int num =Integer.parseInt(s2);
        int[] arr = new int[split.length];
        for (int i = 0; i < split.length; i++) {
            arr[i] = Integer.parseInt(split[i]);
        }
//        int[] array = Arrays.stream(split).distinct().sorted().mapToInt(Integer::parseInt).toArray();
        List<List<Integer>> list = sum(arr);
        for (List<Integer> l : list) {
            System.out.println(l);
        }

    }

    public static List<List<Integer>> sum(int[] arr) {
        List<List<Integer>> list = new ArrayList<>();
        Arrays.sort(arr);
//        遍历arr,每次确定arr[i]
        for (int i = 0; i < arr.length - 1; i++) {
//            如果排序后第一个就>0,直接返回
            if (arr[i] > 0) return list;
//            去除相同的元素作为开始
            if (i > 0 && arr[i] == arr[i - 1]) continue;

            int s = -arr[i];//先确定一个
            int l = i + 1, r = arr.length - 1;

            while (l < r) {
                if (arr[l] + arr[r] > s) {
                    r--;
                } else if (arr[l] + arr[r] < s) {
                    l++;
                } else {
                    List<Integer> clist = new ArrayList<>();
                    clist.add(arr[i]);
                    clist.add(arr[l]);
                    clist.add(arr[r]);
                    list.add(clist);
//                    去除左右相同元素
                    while (l < r && arr[l] == arr[l + 1]) {
                        l++;
                    }
                    while (l < r && arr[r] == arr[r - 1]) {
                        r--;
                    }
                    l++;
                    r--;
                }
            }
        }
        return list;
    }
}
